package com.nineclock.system.service;

import com.nineclock.common.entity.PageResult;
import com.nineclock.common.entity.Result;
import com.nineclock.system.dto.SysCompanyUserDTO;
import com.nineclock.system.excel.ExcelMember;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public interface SysCompanyUserService {

    /**
     * 根据用户ID/企业ID查询员工列表
     * @param userId
     * @param companyId
     * @return
     */
    public List<SysCompanyUserDTO> queryCompanyUser(Long userId, Long companyId);


    /**
     * 获取当前企业系统管理员
     * @return
     */
    public SysCompanyUserDTO queryCurrentAdmin();

    /**
     * 查询当前企业的所有员工
     * @return
     */
    public List<SysCompanyUserDTO> queryCompanyMemberList();

    /**
     * 根据员工ID获取员工信息
     * @param companyUserId
     * @return
     */
    public SysCompanyUserDTO queryByCompanyUserId(Long companyUserId);

    /**
     * 查询当前企业所有员工
     * @return
     */
    public List<SysCompanyUserDTO> queryAllCompanyUser();

    /**
     * 根据条件分页查询部门下的员工列表
     * @param page
     * @param pageSize
     * @param keyword
     * @param departmentId
     * @return
     */
    public PageResult<SysCompanyUserDTO> queryMembers(Integer page, Integer pageSize, String keyword, Long departmentId);

    /**
     * 解析上传的Excel文件, 并将解析后数据导入数据库
     * @param excelFile
     */
    public void parseExcel(MultipartFile excelFile) throws IOException;

    /**
     * 导入解析之后的数据到数据库
     * @param memberList
     */
    public void importData(List<ExcelMember> memberList);

    /**
     * 根据手机号查询员工
     * @param mobile
     * @return
     */
    public SysCompanyUserDTO findCompanyUserByMobile(String mobile);

    /**
     * 根据部门ID, 查询该部门下的员工数量
     * @param departmentIds
     * @return
     */
    public Integer queryUserCountByDepartmentIds(List<Long> departmentIds);

    /**
     * 根据企业ID查询主管理员
     * @param companyId
     * @return
     */
    public SysCompanyUserDTO queryAdminByCompanyId(Long companyId);
}
